Internet Protocol version 6 (IPv6) is a network layer (Open Systems Interconnection (OSI) model) protocol for packet switched networks. IPv6 resolves shortcomings of the currently used Internet Protocol version 4 (IPv4). For example, IPv6 has an increased 128 bit address space over IPv4's 32 bit address space. IPv6 also improves on IPv4 in routing and network auto-configuration. IPv6 and IPv4 are expected to coexist for several years during a transition from IPv4 to IPv6. To facilitate the transition from IPv4 to IPv6, some operating systems support a mechanism that allows IPv4 mapped addresses to function with the IPv6 addressing system and with the IPv6 networking API. Operating systems that support this mechanism can handle both IPv6 and IPv4 connection requests with a single listening socket.
However, some operating systems do not support the mechanism that facilitates the single listening socket. These systems may still support both IPv4 and IPv6 network communications separately, without the unified support described above. Therefore, to be able to handle both types of traffic, an application writer may be required to manage the two protocols separately. This may include opening two sockets, handling incoming connections from both sockets, managing blocking and concurrency issues, and so on. Systems without unified support may require that some applications be completely redesigned and/or rewritten if the application is intended to support both types of addressing systems. Further, as applications are now exposed to this platform specific behavior, additional design work may be required to deal with portability issues arising from having to write applications for different operating systems.